// Product.h
#ifndef COURSEDESIGN_PRODUCT_H
#define COURSEDESIGN_PRODUCT_H

#include <string>
using namespace std;

// 商品基类，定义了所有商品共有的属性和接口
class Product {
protected:
    string name;        // 商品名称
    string brand;       // 品牌
    string manufacturer; // 生产厂家
    double price;       // 单价
    int quantity;       // 库存数量
    string category;    // 分类（食品、化妆品等）
    string id;

public:
    virtual ~Product() = default; // 虚析构函数，确保子类正确释放

    // 纯虚函数，供子类重写显示商品信息
    virtual void displayInfo() const = 0;
    //  更新特殊字段
    virtual void updateSpecialField(const string& value){}

    // Getter 和 Setter 方法
    string getName() const ;
    string getBrand() const ;
    string getManufacturer() const ;
    double getPrice() const ;
    int getQuantity() const ;
    string getCategory() const ;
    string getId() const;

    void setId(string i);
    void setName(string n) ;
    void setBrand(string b) ;
    void setManufacturer(string m);
    void setPrice(double p) ;
    void setQuantity(int q);
    void setCategory(string c) ;
    void display() const;
};

#endif //COURSEDESIGN_PRODUCT_H